ë°íì íì ê²ì¬ë¡ JavaScript 몚ëì ìì ì±ì ê°ííìžì. 컎íìŒ íì ë¶ìì ëìŽì ê²¬ê³ í íì ìì ì± êµ¬í ë°©ë²ì ìì볎ìžì.
JavaScript 몚ë ííì íì ìì ì±: ë°íì 몚ë íì ê²ì¬
ì ì°ì±ìŒë¡ ì ëª í JavaScriptë ì¢ ì¢ ì격í íì ê²ì¬ê° ë¶ì¡±íì¬ ì ì¬ì ìž ë°íì ì€ë¥ê° ë°ìí ì ììµëë€. TypeScriptì Flowë ì ì íì ê²ì¬ë¥Œ ì ê³µíì§ë§, í¹í ëì ê°ì žì€êž° ë° ëªšë ííìì ë€ë£° ë 몚ë ìë늬ì€ë¥Œ íì ë€ë£šì§ë 못í©ëë€. ìŽ êžììë ìœë ìì ì±ì ê°ííê³ ììì¹ ëª»í ëìì ë°©ì§íêž° ìíŽ JavaScript 몚ë ííìì ëí ë°íì íì ê²ì¬ë¥Œ 구ííë ë°©ë²ì í구í©ëë€. ëì ë°ìŽí°ì ìžë¶ ì¢ ìì±ìë ë¶êµ¬íê³ ëªšëìŽ ììëë¡ ìëíëë¡ ë³Žì¥íë ë° ì¬ì©í ì ìë ì€ì©ì ìž êž°ë²ê³Œ ì ëµì ììží ìŽíŽë³Žê² ìµëë€.
JavaScript 몚ëì íì ìì ì± ê³Œì ìŽíŽ
JavaScriptì ëì í¹ì±ì íì ìì ì±ì ëí ê³ ì í 곌ì 륌 ì ìí©ëë€. ì ì íì ìžìŽì ë¬ëЬ JavaScriptë ë°íì ì€ì íì ê²ì¬ë¥Œ ìíí©ëë€. ìŽë¡ ìžíŽ ë°°í¬ íììŒ ë°ê²¬ëìŽ ì¬ì©ììê² ìí¥ì ë¯žì¹ ì ìë ì€ë¥ê° ë°ìí ì ììµëë€. í¹í ëì ê°ì žì€êž°ê° êŽë šë 몚ë ííìì ë³µì¡ì±ì ëí©ëë€. 구첎ì ìž ê³Œì 륌 ìŽíŽë³Žê² ìµëë€.
- ëì ê°ì žì€êž°:
import()구묞ì ì¬ì©í멎 몚ëì ë¹ëêž°ì ìŒë¡ ë¡ëí ì ììµëë€. ê·žë¬ë ê°ì žìš 몚ëì íì ì 컎íìŒ ìì ì ì ì ììŒë¯ë¡ ì ì ìŒë¡ íì ìì ì±ì ê°ì íêž° ìŽë µìµëë€. - ìžë¶ ì¢ ìì±: 몚ëì ì¢ ì¢ ìžë¶ ëŒìŽëžë¬ëЬë APIì ì졎íë©°, ìŽë€ì íì ìŽ ì ííê² ì ìëì§ ììê±°ë ìê°ìŽ ì§ëšì ë°ëŒ ë³ê²œë ì ììµëë€.
- ì¬ì©ì ì ë ¥: ì¬ì©ì ì ë ¥ì ì²ëЬíë 몚ëì ì ë ¥ìŽ ì ëë¡ ê²ìŠëì§ ììŒë©Ž íì êŽë š ì€ë¥ì ì·šìœí©ëë€.
- ë³µì¡í ë°ìŽí° 구조: JSON ê°ì²Žë ë°°ìŽê³Œ ê°ì ë³µì¡í ë°ìŽí° 구조륌 ì²ëЬíë 몚ëì ë°ìŽí° 묎결ì±ì 볎ì¥íêž° ìíŽ ì ì€í íì ê²ì¬ê° íìí©ëë€.
ì¬ì©ì í겜 ì€ì ì ë°ëŒ 몚ëì ëì ìŒë¡ ë¡ëíë ì¹ ì í늬ìŒìŽì ì 구ì¶íë ìë늬ì€ë¥Œ ìê°íŽ ë³Žìžì. 몚ëì êž°ì¬, ë¹ëì€ ëë ëíí ê²ì곌 ê°ì ë€ìí ì íì ìœí ìž ë¥Œ ë ëë§íë ìí ì í ì ììµëë€. ë°íì íì ê²ì¬ ììŽë ì못 구ì±ë 몚ëìŽë ììì¹ ëª»í ë°ìŽí°ë¡ ìžíŽ ë°íì ì€ë¥ê° ë°ìíì¬ ì¬ì©ì 겜íìŽ ì€ëšë ì ììµëë€.
ë°íì íì ê²ì¬ê° ì€ìí ìŽì
ë°íì íì ê²ì¬ë íì êŽë š ì€ë¥ì ëí ì¶ê° ë°©ìŽ ê³ìžµì ì ê³µíšìŒë¡ìš ì ì íì ê²ì¬ë¥Œ 볎ìí©ëë€. ìŽê²ìŽ íìì ìž ìŽì ë ë€ì곌 ê°ìµëë€.
- ì ì ë¶ììŽ ëì¹ë ì€ë¥ë¥Œ í¬ì°©í©ëë€: TypeScript ë° Flowì ê°ì ì ì ë¶ì ë구ë í¹í ëì ê°ì žì€êž°, ìžë¶ ì¢ ìì± ëë ë³µì¡í ë°ìŽí° 구조ì êŽë šë 몚ë ì ì¬ì íì ì€ë¥ë¥Œ íì í¬ì°©í ìë ììµëë€.
- ìœë ìì ì±ì í¥ììíµëë€: ë°íìì ë°ìŽí° ì íì ê²ìŠíšìŒë¡ìš ììì¹ ëª»í ëìì ë°©ì§íê³ ëªšëìŽ ì¬ë°ë¥Žê² ìëíëë¡ ë³Žì¥í ì ììµëë€.
- ë ëì ì€ë¥ ì²ëŠ¬ë¥Œ ì ê³µí©ëë€: ë°íì íì ê²ì¬ë¥Œ íµíŽ íì ì€ë¥ë¥Œ ì°ìíê² ì²ëЬíì¬ ê°ë°ìì ì¬ì©ììê² ì ìµí ì€ë¥ ë©ìì§ë¥Œ ì ê³µí ì ììµëë€.
- ë°©ìŽì íë¡ê·žëë°ì ìŽì§í©ëë€: ë°íì íì ê²ì¬ë ëª ìì ìŒë¡ ë°ìŽí° íì ì ê²ìŠíê³ ì ì¬ì ì€ë¥ë¥Œ ì¬ì ì ì²ëЬíë ë°©ìŽì íë¡ê·žëë° ì ê·Œ ë°©ìì ì¥ë €í©ëë€.
- ëì í겜ì ì§ìí©ëë€: 몚ëìŽ ì죌 ë¡ë ë° ìžë¡ëëë ëì í겜ììë ë°íì íì ê²ì¬ê° ìœë 묎결ì±ì ì ì§íë ë° ì€ìí©ëë€.
ë°íì íì ê²ì¬ 구í êž°ë²
JavaScript 몚ëìì ë°íì íì ê²ì¬ë¥Œ 구ííë ë° ì¬ì©í ì ìë ëª ê°ì§ êž°ë²ìŽ ììµëë€. ê°ì¥ íšê³Œì ìž ì ê·Œ ë°©ì ì€ ìŒë¶ë¥Œ ìŽíŽë³Žê² ìµëë€.
1. typeof ë° instanceof ì°ì°ì ì¬ì©
typeof ë° instanceof ì°ì°ìë ë°íìì ë³ìì íì
ì íìží ì ìë ëŽì¥ JavaScript êž°ë¥ì
ëë€. typeof ì°ì°ìë ë³ìì íì
ì ëíëŽë 묞ììŽì ë°ííê³ , instanceof ì°ì°ìë ê°ì²Žê° í¹ì íŽëì€ ëë ìì±ì íšìì ìžì€íŽì€ìžì§ íìží©ëë€.
ìì:
// ëí ì íì ë°ëŒ 멎ì ì ê³ì°íë 몚ë
const geometryModule = {
calculateArea: (shape) => {
if (typeof shape === 'object' && shape !== null) {
if (shape.type === 'rectangle') {
if (typeof shape.width === 'number' && typeof shape.height === 'number') {
return shape.width * shape.height;
} else {
throw new Error('Rectangle must have numeric width and height.');
}
} else if (shape.type === 'circle') {
if (typeof shape.radius === 'number') {
return Math.PI * shape.radius * shape.radius;
} else {
throw new Error('Circle must have a numeric radius.');
}
} else {
throw new Error('Unsupported shape type.');
}
} else {
throw new Error('Shape must be an object.');
}
}
};
// ì¬ì© ìì
try {
const rectangleArea = geometryModule.calculateArea({ type: 'rectangle', width: 5, height: 10 });
console.log('Rectangle Area:', rectangleArea); // ì¶ë ¥: Rectangle Area: 50
const circleArea = geometryModule.calculateArea({ type: 'circle', radius: 7 });
console.log('Circle Area:', circleArea); // ì¶ë ¥: Circle Area: 153.93804002589985
const invalidShapeArea = geometryModule.calculateArea({ type: 'triangle', base: 5, height: 8 }); // ì€ë¥ ë°ì
} catch (error) {
console.error('Error:', error.message);
}
ìŽ ìììì calculateArea íšìë typeof륌 ì¬ì©íì¬ shape ìžìì íì
곌 íŽë¹ ìì±ì íìží©ëë€. íì
ìŽ ìì ê°ê³Œ ìŒì¹íì§ ììŒë©Ž ì€ë¥ê° ë°ìí©ëë€. ìŽë ê² í멎 ììì¹ ëª»í ëìì ë°©ì§íê³ íšìê° ì¬ë°ë¥Žê² ìëíëë¡ ë³Žì¥í ì ììµëë€.
2. ì¬ì©ì ì ì íì ê°ë ì¬ì©
íì ê°ëë í¹ì 조걎ì êž°ë°ìŒë¡ ë³ìì íì ì ì¢íë íšìì ëë€. ë³µì¡í ë°ìŽí° 구조 ëë ì¬ì©ì ì ì íì ì ë€ë£° ë í¹í ì ì©í©ëë€. ì¬ì©ì ì ì íì ê°ë륌 ì ìíì¬ ë 구첎ì ìž íì ê²ì¬ë¥Œ ìíí ì ììµëë€.
ìì:
// User ê°ì²Žì ëí íì
ì ì
/**
* @typedef {object} User
* @property {string} id - ì¬ì©ìì ê³ ì ìë³ì.
* @property {string} name - ì¬ì©ìì ìŽëŠ.
* @property {string} email - ì¬ì©ìì ìŽë©ìŒ 죌ì.
* @property {number} age - ì¬ì©ìì ëìŽ. ì í ì¬í.
*/
/**
* ê°ì²Žê° Userìžì§ íìžíë íì
ê°ë
* @param {any} obj - íìží ê°ì²Ž.
* @returns {boolean} - ê°ì²Žê° UserìŽë©Ž true, ê·žë ì§ ììŒë©Ž false.
*/
function isUser(obj) {
return (
typeof obj === 'object' &&
obj !== null &&
typeof obj.id === 'string' &&
typeof obj.name === 'string' &&
typeof obj.email === 'string'
);
}
// ì¬ì©ì ë°ìŽí° ì²ëЬ íšì
function processUserData(user) {
if (isUser(user)) {
console.log(`Processing user: ${user.name} (${user.email})`);
// ì¬ì©ì ê°ì²Žë¡ ì¶ê° ìì
ìí
} else {
console.error('Invalid user data:', user);
throw new Error('Invalid user data provided.');
}
}
// ì¬ì© ìì:
const validUser = { id: '123', name: 'John Doe', email: 'john.doe@example.com' };
const invalidUser = { name: 'Jane Doe', email: 'jane.doe@example.com' }; // 'id' ëëœ
try {
processUserData(validUser);
} catch (error) {
console.error(error.message);
}
try {
processUserData(invalidUser); // 'id' íë ëëœìŒë¡ ì€ë¥ ë°ì
} catch (error) {
console.error(error.message);
}
ìŽ ìììì isUser íšìë íì
ê°ë ìí ì í©ëë€. ê°ì²Žê° User ê°ì²Žë¡ ê°ì£Œëêž° ìíŽ íìí ìì±ê³Œ íì
ì ê°ì§ê³ ìëì§ íìží©ëë€. processUserData íšìë ìŽ íì
ê°ë륌 ì¬ì©íì¬ ì²ëЬíêž° ì ì ì
ë ¥ì ê²ìŠí©ëë€. ìŽë ê² í멎 íšìê° ì íší User ê°ì²Žì ëíŽìë§ ìëíëë¡ íì¬ ì ì¬ì ìž ì€ë¥ë¥Œ ë°©ì§í ì ììµëë€.
3. ê²ìŠ ëŒìŽëžë¬ëЬ ì¬ì©
ì¬ë¬ JavaScript ê²ìŠ ëŒìŽëžë¬ëŠ¬ë¥Œ ì¬ì©íì¬ ë°íì íì ê²ì¬ íë¡ìžì€ë¥Œ ëšìíí ì ììµëë€. ìŽë¬í ëŒìŽëžë¬ëЬë ê²ìŠ ì€í€ë§ë¥Œ ì ìíê³ ë°ìŽí°ê° íŽë¹ ì€í€ë§ë¥Œ ì€ìíëì§ íìžíë ížëЬí ë°©ë²ì ì ê³µí©ëë€. ìžêž° ìë ëª ê°ì§ ê²ìŠ ëŒìŽëžë¬ëЬë ë€ì곌 ê°ìµëë€.
- Joi: JavaScript륌 ìí ê°ë ¥í ì€í€ë§ ì€ëª ìžìŽ ë° ë°ìŽí° ê²ìŠêž°ì ëë€.
- Yup: ë°íì ê° êµ¬ë¬ž ë¶ì ë° ê²ìŠì ìí ì€í€ë§ ë¹ëì ëë€.
- Ajv: ë§€ì° ë¹ ë¥ž JSON ì€í€ë§ ê²ìŠêž°ì ëë€.
Joi ì¬ì© ìì:
const Joi = require('joi');
// ì í ê°ì²Žì ëí ì€í€ë§ ì ì
const productSchema = Joi.object({
id: Joi.string().uuid().required(),
name: Joi.string().min(3).max(50).required(),
price: Joi.number().positive().precision(2).required(),
description: Joi.string().allow(''),
imageUrl: Joi.string().uri(),
category: Joi.string().valid('electronics', 'clothing', 'books').required(),
// quantity ë° isAvailable íë ì¶ê°
quantity: Joi.number().integer().min(0).default(0),
isAvailable: Joi.boolean().default(true)
});
// ì í ê°ì²Žë¥Œ ê²ìŠíë íšì
function validateProduct(product) {
const { error, value } = productSchema.validate(product);
if (error) {
throw new Error(error.details.map(x => x.message).join('\n'));
}
return value; // ê²ìŠë ì í ë°í
}
// ì¬ì© ìì:
const validProduct = {
id: 'a1b2c3d4-e5f6-7890-1234-567890abcdef',
name: 'Awesome Product',
price: 99.99,
description: 'This is an amazing product!',
imageUrl: 'https://example.com/product.jpg',
category: 'electronics',
quantity: 10,
isAvailable: true
};
const invalidProduct = {
id: 'invalid-uuid',
name: 'AB',
price: -10,
category: 'invalid-category'
};
// ì íší ì í ê²ìŠ
try {
const validatedProduct = validateProduct(validProduct);
console.log('Validated Product:', validatedProduct);
} catch (error) {
console.error('Validation Error:', error.message);
}
// ì íšíì§ ìì ì í ê²ìŠ
try {
const validatedProduct = validateProduct(invalidProduct);
console.log('Validated Product:', validatedProduct);
} catch (error) {
console.error('Validation Error:', error.message);
}
ìŽ ìììì Joië product ê°ì²Žì ëí ì€í€ë§ë¥Œ ì ìíë ë° ì¬ì©ë©ëë€. validateProduct íšìë ìŽ ì€í€ë§ë¥Œ ì¬ì©íì¬ ì
ë ¥ì ê²ìŠí©ëë€. ì
ë ¥ìŽ ì€í€ë§ë¥Œ ì€ìíì§ ììŒë©Ž ì€ë¥ê° ë°ìí©ëë€. ìŽë ê² í멎 íì
ìì ì±ê³Œ ë°ìŽí° 묎결ì±ì ìííë ëª
ííê³ ê°ê²°í ë°©ë²ì ì ê³µí©ëë€.
4. ë°íì íì ê²ì¬ ëŒìŽëžë¬ëЬ ì¬ì©
ìŒë¶ ëŒìŽëžë¬ëЬë JavaScriptìì ë°íì íì ê²ì¬ë¥Œ ìíŽ í¹ë³í ì€ê³ëììµëë€. ìŽë¬í ëŒìŽëžë¬ëЬë íì ê²ì¬ì ëí ë 구조íëê³ í¬êŽì ìž ì ê·Œ ë°©ìì ì ê³µí©ëë€.
- ts-interface-checker: TypeScript ìží°íìŽì€ìì ë°íì ê²ìŠêž°ë¥Œ ìì±í©ëë€.
- io-ts: ë°íì íì ê²ìŠêž°ë¥Œ ì ìíë ë° êµ¬ì± ê°ë¥íê³ íì ìŽ ìì í ë°©ë²ì ì ê³µí©ëë€.
ts-interface-checker ì¬ì© ìì (ê°ë ì€ëª - TypeScript ì€ì íì):
// product.tsì TypeScript ìží°íìŽì€ê° ì ìëìŽ ìë€ê³ ê°ì :
// export interface Product {
// id: string;
// name: string;
// price: number;
// }
// ts-interface-builder륌 ì¬ì©íì¬ ë°íì ê²ì¬êž°ë¥Œ ìì±í 겜ì°:
// import { createCheckers } from 'ts-interface-checker';
// import { Product } from './product';
// const { Product: checkProduct } = createCheckers(Product);
// ìì JavaScript ìììì ìì±ë ê²ì¬êž° ì뮬ë ìŽì
const checkProduct = (obj) => {
if (typeof obj !== 'object' || obj === null) return false;
if (typeof obj.id !== 'string') return false;
if (typeof obj.name !== 'string') return false;
if (typeof obj.price !== 'number') return false;
return true;
};
function processProduct(product) {
if (checkProduct(product)) {
console.log('Processing valid product:', product);
} else {
console.error('Invalid product data:', product);
}
}
const validProduct = { id: '123', name: 'Laptop', price: 999 };
const invalidProduct = { name: 'Laptop', price: '999' };
processProduct(validProduct);
processProduct(invalidProduct);
ì°žê³ : ts-interface-checker ììë ì늬륌 볎ì¬ì€ëë€. ìŒë°ì ìŒë¡ TypeScript ìží°íìŽì€ìì checkProduct íšì륌 ìì±íêž° ìíŽ TypeScript ì€ì ìŽ íìí©ëë€. ìì JavaScript ë²ì ì ëšìíë ì€ëª
ì
ëë€.
ë°íì 몚ë íì ê²ì¬ë¥Œ ìí ëªšë² ì¬ë¡
JavaScript 몚ëì ë°íì íì ê²ì¬ë¥Œ íšê³Œì ìŒë¡ 구ííë €ë©Ž ë€ì ëªšë² ì¬ë¡ë¥Œ ê³ ë €íììì€.
- ëª íí íì ê³ìœ ì ì: 몚ë ì ë ¥ ë° ì¶ë ¥ì ëí ìì íì ì ëª ííê² ì ìí©ëë€. ìŽë ê² í멎 몚ë ê°ì ëª íí ê³ìœì ì€ì íê³ íì ì€ë¥ë¥Œ ë ìœê² ìë³í ì ììµëë€.
- 몚ë 겜ê³ìì ë°ìŽí° ê²ìŠ: ë°ìŽí°ê° ì ë ¥ëê±°ë ëê°ë 몚ëì 겜ê³ìì íì ê²ìŠì ìíí©ëë€. ìŽë ê² í멎 íì ì€ë¥ë¥Œ 격늬íê³ ì í늬ìŒìŽì ì 첎ì ì íëë ê²ì ë°©ì§í ì ììµëë€.
- ì€ëª ì ìž ì€ë¥ ë©ìì§ ì¬ì©: ì€ë¥ ì í곌 ìì¹ë¥Œ ëª ííê² ëíëŽë ì ìµí ì€ë¥ ë©ìì§ë¥Œ ì ê³µí©ëë€. ìŽë ê² í멎 ê°ë°ìê° íì êŽë š 묞ì 륌 ë ìœê² ëë²ê¹ íê³ ìì í ì ììµëë€.
- ì±ë¥ ê³ ë € ì¬í: ë°íì íì ê²ì¬ë ì í늬ìŒìŽì ì ì€ë²í€ë륌 ì¶ê°í ì ììµëë€. ì±ë¥ ìí¥ì ìµìííêž° ìíŽ íì ê²ì¬ ë¡ì§ì ìµì íí©ëë€. ì륌 ë€ìŽ ìºì± ëë ì§ì° íê°ë¥Œ ì¬ì©íì¬ ì€ë³µ íì ê²ì¬ë¥Œ ë°©ì§í ì ììµëë€.
- ë¡ê¹ ë° ëªšëí°ë§ê³Œ íµí©: ë°íì íì ê²ì¬ ë¡ì§ì ë¡ê¹ ë° ëªšëí°ë§ ìì€í 곌 íµí©í©ëë€. ìŽë ê² í멎 íë¡ëì ìì íì ì€ë¥ë¥Œ ì¶ì íê³ ì¬ì©ììê² ìí¥ì 믞ì¹êž° ì ì ì ì¬ì ìž ë¬žì 륌 ìë³í ì ììµëë€.
- ì ì íì ê²ì¬ì ê²°í©: ë°íì íì ê²ì¬ë ì ì íì ê²ì¬ë¥Œ 볎ìí©ëë€. ë êž°ë²ì 몚ë ì¬ì©íì¬ JavaScript 몚ëìì í¬êŽì ìž íì ìì ì±ì ë¬ì±í©ëë€. TypeScriptì Flowë ì ì íì ê²ì¬ì íë¥í ì íì ëë€.
ë€ìí êžë¡ë² 컚í ì€ížì ê±žì¹ ìì
ë°íì íì ê²ì¬ê° ë€ìí êžë¡ë² 컚í ì€ížìì ìŽë»ê² ì ìµí ì ìëì§ ìŽíŽë³Žê² ìµëë€.
- ì ì ìê±°ë íë«íŒ (êžë¡ë²): ì ìžê³ì ìŒë¡ ì íì íë§€íë ì ì ìê±°ë íë«íŒì ë€ìí íµí íì, ë ì§ íì ë° ì£Œì íìì ì²ëЬíŽìŒ í©ëë€. ë°íì íì ê²ì¬ë¥Œ ì¬ì©íì¬ ì¬ì©ì ì ë ¥ì ê²ìŠíê³ ì¬ì©ìì ìì¹ì êŽê³ììŽ ë°ìŽí°ê° ì¬ë°ë¥Žê² ì²ëЬëëë¡ ë³Žì¥í ì ììµëë€. ì륌 ë€ìŽ, ì°ížë²ížê° í¹ì êµê°ì ìì íì곌 ìŒì¹íëì§ íìží©ëë€.
- êžìµ ì í늬ìŒìŽì (ë€êµì ): ì¬ë¬ íµíë¡ ê±°ë륌 ì²ëЬíë êžìµ ì í늬ìŒìŽì ì ì íí íµí ë³íì ìííê³ ë€ìí ìžêž ê·ì ì ì²ëЬíŽìŒ í©ëë€. ë°íì íì ê²ì¬ë¥Œ ì¬ì©íì¬ íµí ìœë, íìš ë° ìžêž êžì¡ì ê²ìŠíì¬ ì¬ì ì€ë¥ë¥Œ ë°©ì§í ì ììµëë€. ì륌 ë€ìŽ, íµí ìœëê° ì íší ISO 4217 íµí ìœëìžì§ íìží©ëë€.
- ìë£ ìì€í (êµì ): ì¬ë¬ êµê°ì íì ë°ìŽí°ë¥Œ êŽëЬíë ìë£ ìì€í ì ë€ìí ìë£ êž°ë¡ íì, ìžìŽ ì ížë ë° ê°ìž ì 볎 ë³Žíž ê·ì ì ì²ëЬíŽìŒ í©ëë€. ë°íì íì ê²ì¬ë¥Œ ì¬ì©íì¬ íì ìë³ì, ìë£ ìœë ë° ëì ììì ê²ìŠíì¬ ë°ìŽí° 묎결ì±ê³Œ ê·ì ì€ì륌 볎ì¥í ì ììµëë€. ì륌 ë€ìŽ, íìì ìë ììŒìŽ ì¬ë°ë¥ž íìì ì íší ë ì§ìžì§ íìží©ëë€.
- êµì¡ íë«íŒ (êžë¡ë²): ì¬ë¬ ìžìŽë¡ 곌ì ì ì ê³µíë êµì¡ íë«íŒì ë€ìí 묞ì ìžíž, ë ì§ íì ë° ìê°ë륌 ì²ëЬíŽìŒ í©ëë€. ë°íì íì ê²ì¬ë¥Œ ì¬ì©íì¬ ì¬ì©ì ì ë ¥, 곌ì ìœí ìž ë° íê° ë°ìŽí°ë¥Œ ê²ìŠíì¬ ì¬ì©ìì ìì¹ ëë ìžìŽì êŽê³ììŽ íë«íŒìŽ ì¬ë°ë¥Žê² ìëíëë¡ ë³Žì¥í ì ììµëë€. ì륌 ë€ìŽ, íì ìŽëŠì ì íí ìžìŽì ì íší 묞ìë§ í¬íšëìŽ ìëì§ íìží©ëë€.
ê²°ë¡
ë°íì íì ê²ì¬ë í¹í ëì ê°ì žì€êž° ë° ëªšë ííìì ë€ë£° ë JavaScript 몚ëì ìì ì±ê³Œ ê²¬ê³ ì±ì í¥ììí€ë ê°ì¹ ìë êž°ë²ì ëë€. ë°íìì ë°ìŽí° íì ì ê²ìŠíšìŒë¡ìš ììì¹ ëª»í ëìì ë°©ì§íê³ , ì€ë¥ ì²ëŠ¬ë¥Œ ê°ì íë©°, ë°©ìŽì íë¡ê·žëë°ì ìŽì§í ì ììµëë€. TypeScript ë° Flowì ê°ì ì ì íì ê²ì¬ ë구ë íìì ìŽì§ë§, ë°íì íì ê²ì¬ë ì ì ë¶ììì ëì¹ ì ìë íì êŽë š ì€ë¥ì ëí ì¶ê° ë³Žíž ê³ìžµì ì ê³µí©ëë€. ì ì ë° ë°íì íì ê²ì¬ë¥Œ ê²°í©í멎 í¬êŽì ìž íì ìì ì±ì ë¬ì±íê³ ë ìì ì ìŽê³ ì ì§ êŽëЬ ê°ë¥í JavaScript ì í늬ìŒìŽì ì 구ì¶í ì ììµëë€.
JavaScript 몚ëì ê°ë°í ë ë°íì íì ê²ì¬ êž°ë²ì íµí©íì¬ ëªšëìŽ ë€ìí í겜곌 ë€ìí 조걎ìì ì¬ë°ë¥Žê² ìëíëë¡ ë³Žì¥íë ê²ì ê³ ë €íììì€. ìŽë¬í ì¬ì ìë°©ì ì ê·Œ ë°©ìì ì ìžê³ ì¬ì©ìì ì구륌 충족íë ë ê°ë ¥íê³ ìì ì ìž ìíížìšìŽë¥Œ 구ì¶íë ë° ëììŽ ë ê²ì ëë€.